
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;

import java.io.FileInputStream;
import java.io.InputStream;


public class OSSTest {
    static String accessKey = "PwY-CpTN268e4Jb5mkVOC0QKrj8cOsjq7Sim9weg";
    static String secretKey = "iSxTaWHufJWHnNkHZ6WUwoVnxatyQhOZvED_0VzJ";
    static String bucket = "happy-cloud";
    public static void main(String[] args) {

        //构造一个带指定 Region 对象的配置类
//修改1.Region指定数据存储区域，autoRegion()自动根据七牛云账号找到选的区域（我选的是 华北）
        Configuration cfg = new Configuration(Region.autoRegion());
        cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释

        UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证，然后准备上传


//        String accessKey = "";
//        String secretKey = "";

//        String bucket = "";

//默认不指定key的情况下，以文件内容的hash值作为文件名,  比如上传一张图片，名字问hash值生成的名字
//修改4.指定上传文件到oss时，文件的存储名
        String key = null;

        try {
//修改5 注释掉，默认上传 字符串，写我们自己的上传格式（上传图片）
//            byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
//            ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
//上传文件——图片格式（本机绝对路径）
            //InputStream inputStream = new FileInputStream("D:\\happy\\ae.jpeg");
            String path="D:/happy/face/2024/05/09/330c5c08-d749-4a9f-90a7-3bf4883692a8.jpg";
            Auth auth = Auth.create(accessKey, secretKey);//创建凭证
            String upToken = auth.uploadToken(bucket); //上传凭证

            try {
//修改6 put方法 第一个参数 要放上面 自己定义的 inputStream对象
                Response response = uploadManager.put(path,key,upToken);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                System.out.println(putRet.key); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL
                System.out.println(putRet.hash); //Fo2AVLRHugoNbek6XZ8Uy-DCnuSL hash值就是上传后的图片名字
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }
            }
        } catch (Exception ex) {
            //ignore  异常类型 改大一点
        }

    }

    }

